package com.wangjie.stackandqueue;

import java.util.Arrays;
import java.util.Stack;

/**
 * @author jieshao
 * @date 2022/5/13 11:38
 *
 * 739. 每日温度
 */
public class Test07 {
    public static void main(String[] args) {
        int[] arr = {73, 74, 75, 71, 69, 72, 76, 73};
        int[] res = dailyTemperatures(arr);
        System.out.println(Arrays.toString(res));
    }

    public static int[] dailyTemperatures(int[] nums) {
        int[] res = new int[nums.length];
        // 这里存放元素索引，而不是元素
        Stack<Integer> s = new Stack<>();
        // 单调栈模板
        for (int i = nums.length - 1; i >= 0; i--) {
            while (!s.empty() && nums[s.peek()] <= nums[i]) {
                s.pop();
            }
            // 得到索引间距
            res[i] = s.empty() ? 0 : (s.peek() - i);
            // 将索引入栈，而不是元素
            s.push(i);
        }
        return res;
    }
}